// 版权所有2011 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package types

// 元组表示变量的有序列表；nil*元组是有效（空）元组。
// 元组用作签名的组件，用于表示多个
// 赋值的类型；它们不是一流的围棋。
type Tuple struct {
	vars []*Var
}

// NewTuple为给定变量返回一个新的元组。
func NewTuple(x ...*Var) *Tuple {
	if len(x) > 0 {
		return &Tuple{vars: x}
	}
	return nil
}

// Len返回元组t的数量变量。
func (t *Tuple) Len() int {
	if t != nil {
		return len(t.vars)
	}
	return 0
}

// At返回元组t的第i个变量。
func (t *Tuple) At(i int) *Var { return t.vars[i] }

func (t *Tuple) Underlying() Type { return t }
func (t *Tuple) String() string   { return TypeString(t, nil) }
